package com.wunong.smart.address.client.service;

import com.wunong.smart.address.client.query.UserAddressQueryDTO;
import com.wunong.smart.address.client.dto.UserAddressDTO;
import com.wunong.smart.domain.platform.rpc.Result;

import java.util.List;

/**
 * 地址读取服务
 *
 * @author create by zealot.zt
 */
public interface UserAddressReadService {

    /**
     * 根据id查询用户地址
     *
     * @param id 用户地址编号
     * @return
     */
    Result<UserAddressDTO> getById(Long id);

    /**
     * 根据id查询用户地址
     *
     * @param userId 用户编号
     * @param id     用户地址编号
     * @return
     */
    Result<UserAddressDTO> getById(Long userId, Long id);

    /**
     * 查询用户的所有用户地址
     *
     * @param userId 用户编号
     * @return
     */
    Result<List<UserAddressDTO>> queryByUser(Long userId, Integer userRole);

    /**
     * 查询用户的默认用户地址
     *
     * @param userId
     * @return
     */
    Result<UserAddressDTO> getDefaultAddress(Long userId, Integer userRole);

    /**
     * 根据查询条件查询用户地址列表
     *
     * @param query
     * @return
     */
    Result<List<UserAddressDTO>> query(Long userId, UserAddressQueryDTO query);

}
